草庐IT

c++ - Swig -includeall 除了...

全部标签

c++ - 在 C 中工作,但在 C++ 中不工作

这个问题在这里已经有了答案:WhyC++compilerallowsassigning0topointersandnoothernumber[duplicate](3个答案)WhyareNULLpointersdefineddifferentlyinCandC++?(3个答案)关闭5年前。以下代码可以在C中编译,但不能在C++中编译:int*ptr=25;//whynotinC++?错误prog.cpp:Infunction‘intmain()’:prog.cpp:6:11:error:invalidconversionfrom‘int’to‘int*’[-fpermissive]in

c++ - 如何在此循环中获得始终如一的高吞吐量?

在优化内部循环的过程中,我遇到了奇怪的性能行为,我无法理解和纠正这些行为。代码的简化版本如下;粗略地说,有一个巨大的数组,分为16个词block,我简单地把每个词block中的前导零的数量加起来。(实际上我使用的是来自DanLuu的popcnt代码,但在这里我选择了一个具有类似性能特征的更简单的指令以“简洁”。DanLuu的代码基于对thisSOquestion的回答。虽然它有非常相似的奇怪结果,但似乎并没有在这里回答我的问题。)//-*-compile-command:"gcc-O3-march=native-Wall-Wextra-std=c99-oclz-timingclz-ti

c++ - 如何将 C/C++ 库代码封装为可在具有多个实例的单独线程中运行?

想象一个项目的开发时间跨度超过10年。有些部分是用C编写的,有些是用C++编写的,所有代码都使用了全局函数和全局变量。该架构本质上是单线程设计的,并以这种方式不断发展。但现在我们考虑使用众核架构。现在正在评估的一个想法是将一部分代码重构到一个库中,从而可以创建多个实例,以便它们可以在单独的线程中运行并且不会相互干扰。目前最受关注的提议是将所有库文件包装到具有宏定义的命名空间中,例如:namespaceVARIANT{//allthecode}然后在header或项目级别定义VARIANT。这将使在不同的命名空间中拥有不同的上下文成为可能。卖点是这种方法需要最少的代码更改,并且引入任何回

c++ - 如何刷新 Windows 中的所有文件缓冲区?

在Windows中有FlushFileBuffers()API可以为单个文件刷新缓冲区到硬盘驱动器。Linux中有sync()API可以刷新所有文件的文件缓冲区。但是,是否也有用于刷新所有文件的WinAPI,即sync()模拟? 最佳答案 https://learn.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-flushfilebuffers可以刷新整个硬盘驱动器。Toflushallopenfilesonavolume,callFlushFileBuffer

c++ - 是否有任何内置函数告诉编译器分支是否可预测?

我不是在问__builtin_expect这样的事情。我正在考虑这样一种情况,我不知道一个分支通常是真还是假,但我确实知道它是可预测的(或不可预测的)。我希望编译器知道一个分支是可预测的,更有可能生成分支,并且知道它是不可预测的,更有可能生成没有分支的条件执行指令。这在主要编译器中可能吗?(特别考虑gcc和clang)。解释为什么“可预测”和“可能”不是一回事的例子intx=rand()%2;while(true){if(x){//dosomething}}if语句既不太可能也不太可能,但高度可预测。while(true){if(rand()%5>0){//dosomething}}在

c++ - 最准确的线相交坐标计算与 float ?

我在给定横坐标x处计算直线上一点的纵坐标y。该线由其两个端点坐标(x0,y0)(x1,y1)定义。端点坐标是float,必须以浮点精度进行计算才能在GPU中使用。数学和天真的实现都是微不足道的。设t=(x-x0)/(x1-x0),则y=(1-t)*y0+t*y1=y0+t*(y1-y0)。问题出在x1-x0很小的时候。结果将引入取消错误。当与x-x0中的一个结合时,在除法中我预计t会出现重大错误。问题是是否存在另一种更准确地确定y的方法?即我应该先计算(x-x0)*(y1-y0),然后除以(x1-x0)吗?y1-y0的差异总是很大。 最佳答案

c++ - 将固定大小内存边界上的 native 代码与 GCC/G++/AS 对齐?

我有一个C函数,其中包含将实现字节码解释器的字节码的所有代码。我想知道是否有一种方法可以在固定大小的边界上对齐内存中的编译代码段,以便我可以直接计算从字节码的值跳转到的地址?有点像数组的工作方式,但我不是从计算的地址读取,而是跳转到它。我知道我必须将执行下一个跳转的代码放在每个“字节码代码”段的末尾,并且我必须使边界大小至少与最大段的大小一样大.如果这甚至可能,我将如何告诉编译器/汇编器(gcc/g++/as)以所述方式对齐? 最佳答案 我意识到这并不是您所要求的,但这是使用GCC实现字节码解释器的标准方法。GCC的“compute

c++ - 来自捕获的 PCM 样本数据的 WAV 文件

我使用NI数据采集模块以48ksps的速度“现场”捕获了数Gb的样本数据。我想根据这些数据创建一个WAV文件。我之前使用MATLAB加载数据,将其标准化为16位PCM范围,然后将其写为WAV文件。然而,MATLAB在文件大小方面犹豫不决,因为它在“内存中”执行所有操作。理想情况下,我会使用C++或C(C#是一个选项)执行此操作,或者如果有现成的实用程序,我会使用它。是否有一种简单的方法(即现有库)获取原始PCM缓冲区、指定采样率、位深度并将其打包到WAV文件中?要处理大型数据集,它需要能够以block的形式附加数据,因为不一定可以将整个数据集读入内存。我知道我可以使用格式规范从头开始做

php - PHP的main.c如何开始执行

我正在浏览PHP5.3.1源代码树,并决定看一下main.c.我很好奇每当PHP运行时幕后发生了什么。我的印象是任何C或C++程序都在一个名为main的函数中开始执行,但我在main.c中没有看到具有该名称的函数。PHP代码实际上从哪里开始执行(命令行与MOD_PHP与CGI不同?),我错过了什么w/r/tmain.c文件中没有让我回答的主要函数下次自己问这个问题? 最佳答案 main()函数不必位于名为main.c的文件中。对于php命令行界面main()在php_cli.c中(第642行)。

c++ - 需要c++中对象序列化库的推荐

我正在寻找有关C++对象序列化/反序列化库的建议?哪一个是最先进和开源的?它能处理吗用户定义的任何类?对象层次结构(父类和子类)?对象树?A类具有B类的属性,而B类具有C类的属性?STL容器?A类有B类vector?对象的循环?类A有一个指向B的指针,而B有一个指向A的指针?我找到了boost序列化库。我不确定http://www.boost.org/doc/libs/1_42_0/libs/serialization/doc/tutorial.html的限制是什么 最佳答案 这实际上取决于您要查找的内容。如果您正在寻找超快的速度和